foreign key
-
bi database entitysinde bir attribute olarak ba$ka bi entitynin primary keyinin bulunmasi durumu..
(bkz: ukte dolduruyorum) -
ing. yabancı anahtar
-
oracle turkcesinde baba anahtar olarak gecer.
-
bağlı olduğu key silindiğinde/güncellendiğinde ne yapılacağını belirten constraint.
misal 'silmeye/update e izin vermeyesin!', 'bu silinirse cascading şekilde bağlı diğer kayıtları sil' filan gibisinden özellikler belirtilebilir, belirtilir. -
(bkz: innodb)
-
(bkz: normalizasyon/@mengus)
-
tablolar arası bağlantı yollarından. eger child tabloda foreign tanımlandı ise ve child tabloda parentdaki primary key içeren data varsa parent tablodan o datanın silinmesini önleyen özellik
-
mysql de şu şekilde eklenebilmektedir:
alter table bagimli_tablo add foreign key ( bagimli_alan ) references baglanilan_tablo ( baglanilan_alan ) on delete cascade ; *
tabi burda dikkat edilmesi gereken şey bagimli_tablonun bagimli_alani bir başka tabloya kul köle edilirken baglanilan_tablonun baglanilan_alani unique olması; -
rdbms'lerde kullanmak bir zorunluluk değildir. foreign key'in avantajları
- join'li query'lerde server'a optimizasyon şansı tanıması
- ilişkili tablolarda data silindiğinde diğer tablolardaki ilişkili verinin başına ne geleceğini otomatik tanımlaması
- server'ın raporlama araçlarına yol vermesi, otomatik ilişkilendirilmiş tablolarla dizaynın kafadan kolaylaşması
olsa da sisteme fazladan denetim yükü getirdiği için insert/update/delete'lerde yavaşlamaya neden olabilir. ilişkili tablolarda veri öksüz kalsın ama db performansı azalmasın diyorsanız foreign key'i iptal edebilirsiniz. foreign key'le bir yerlere sıkı sıkıya bağlı satırları silmek de zordur. db üzerinde doğrudan değişiklik yapmak istediğinizde baş ağrıtabilir.
gerçekten ihtiyacınız olmadığı sürece foreign key tanımlamamak karmaşıklığı düşürür. iyidir. -
bir şarkıcı topluluğu . yoksa foreynır mıydı?
ekşi sözlük kullanıcılarıyla mesajlaşmak ve yazdıkları entry'leri
takip etmek için giriş yapmalısın.
hesabın var mı? giriş yap